1. Field of the Invention
The present invention relates to method, system, and program for indicating data transmitted to an input/output device as committed.
2. Description of the Related Art
A storage manager software product, such as the International Business Machines Corporation (xe2x80x9cIBM(copyright)xe2x80x9d) Tivoli Storage Manager,** manages the backup and archiving of client application data at a central server. The storage manager keeps track of the status of files backed-up on tape or other storage medium. The storage manager will not release a file subject to a backup operation until it is assured that the file has been successfully written to tape. A tape drive buffers data in a tape drive cache. When the tape cache is filled, the tape drive controller writes the data from the tape drive cache to the tape medium on a first-in-first-out (FIFO) basis. In the Small Computer System Interface (SCSI) protocol for tape devices, the tape drive returns a complete or GOOD status message when the data is buffered in cache and before the buffered data is written to tape. The storage manager will issue a SCSI WRITE FILEMARKS command with a length of zero to cause the tape drive to write all buffered data to tape. The tape drive returns a GOOD status when all the buffered data is written to tape.
**TIVOLI is a registered trademark of Tivoli Systems, Inc. IBM is a registered trademark of International Business Machines Corporation. 
Upon receiving this GOOD status in response to the SCSI WRITE FILEMARKs command, the storage manager can be assured that all data previously sent to the tape drive since the last successful WRITE FILEMARKS command is on tape. At this point, the storage manager may release the backup files assured to be on tape. This process ensures data integrity on the tape drive as of the time stamp of the most recently released update. The above described commands for writing data to tape are further described in the publication xe2x80x9cSCSI Stream Commands-2 (SSC-2)xe2x80x9d, T10/1434-D rev. 00, Working Draft, printed Aug. 7, 2000 (Copyright American National Standards Institute), which publication is incorporated herein by reference in its entirety.
There is a continued need in the art for improved techniques for determining the status of transmitted data.
Provided is a method, system, and program for maintaining status information on data transmitted to an output device. Data is transmitted to an Input/Output (I/O) device. The I/O device stores the transmitted data in a cache memory. A determination is made as to whether a fixed amount of data exceeding a threshold was transmitted. An indication is made that transmitted data equivalent to the fixed amount was successfully outputted from the cache device after determining that the fixed amount of data exceeding the threshold was transmitted.
Additionally, the threshold may comprise a cache capacity.
In further implementations, the I/O device sends a notification upon successfully outputting data from the cache, and wherein the indication that data was successfully outputted from the cache occurs with respect to data for which notification was not received from the I/O device indicating that the data was successfully outputted.
Still further, the step of indicating that transmitted data equivalent to the fixed amount was successfully outputted comprises determining transmitted data equivalent to the fixed amount that is not indicated as successfully outputted and that was sent before other transmitted data not indicated as successfully outputted. The determined transmitted data is indicated as successfully outputted.
Yet further, the I/O device may compress data before storing the transmitted data in the cache. In such case, determining whether the fixed amount of data exceeding the threshold was transmitted and not indicated as successfully outputted comprises determining whether the fixed amount of data exceeding the threshold times a determined compression ratio was transmitted and not indicated as successfully outputted.
The I/O device may comprise a tape drive. In such case, outputting data comprises transferring data from the cache to a magnetic tape medium.
The described implementations provide a technique for determining whether data was successfully outputted, e.g., written from device cache to the storage medium, without having to interrupt the transfer of data to the I/O device. With the described implementations, determinations of whether data was successfully outputted is based on the amount of data transmitted and accepted by the device.